Skip to content

Conversation

@cvinayak
Copy link
Contributor

@cvinayak cvinayak commented Nov 18, 2025

nrf54h20 cpurad bt_ll_sw_split support.

How to build:

west build --sysbuild -p -d build/peripheral_hr_cpurad -b nrf54h20dk/nrf54h20/cpurad samples/bluetooth/peripheral_hr -Dperipheral_hr_SNIPPET="bt-ll-sw-split"

SebastianBoe and others added 30 commits October 13, 2025 13:03
Add support for UICR.WDTSTART.

UICR.WDTSTART configures the automatic start of a local watchdog timer
before the application core is booted. This provides early system
protection ensuring that the system can recover from early boot
failures.

Upstream PR #: 97337

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
Scanners report these as missing so lets add them.

Signed-off-by: Kari Hamalainen <kari.hamalainen@nordicsemi.no>
Enable GPIO tests on nRF54H20 CPUPPR.

Upstream PR #: 97073

Signed-off-by: Piotr Krzyzanowski <piotr.krzyzanowski@nordicsemi.no>
Added aliases so that nrf54h20dk/nrf54h20/cpuapp can
use MCUboot serial recovery.

Signed-off-by: Andrzej Puzdrowski <andrzej.puzdrowski@nordicsemi.no>

(cherry picked from commit 230b74d)
/delete-property/ for newly added aliases which points to nodes
already removed in that overlay.

Upstream PR #: 97062

Signed-off-by: Andrzej Puzdrowski <andrzej.puzdrowski@nordicsemi.no>

(cherry picked from commit 56843f8)
The update will fail if the address is outside  of this range.
This failure might trigger a bad state where the device is
non-trivial to recover.

Signed-off-by: Håkon Amundsen <haakon.amundsen@nordicsemi.no>
(cherry picked from commit 9d5f94f)
Update the default memory map to include a `secure_storage_partition`,
which is divided into at most four subpartitions. These will be used to
configure UICR.SECURESTORAGE, if enabled.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
(cherry picked from commit d5003d9)
…ction

Certain SPIM instances in nRF52/53/54L/54H Series provide hardware
control of the CSN (chip select) line. Although the standard SPI
drivers do not use this feature, it should be possible to configure
this line through pinctrl in case some special driver needs this.

Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
(cherry picked from commit ca79733)
Fix an incorrect interpretation of the chip select signal
for the SPIM instances. If cs-gpios is used then the chip
select pin is used as a GPIO, and should have CTRLSEL=0.
Only when NRF_FUN_SPIM_CSN is used should CTRLSEL
be configured to enable hardware control of the pin.

Signed-off-by: Jonathan Nilsen <jonathan.nilsen@nordicsemi.no>
(cherry picked from commit b28b570)
This reverts commit 915e81a.

Signed-off-by: Karsten Koenig <karsten.koenig@nordicsemi.no>
Moved the nrf_etr driver from the drive/misc folder into the recently
established driver/debug folder where it is a better fit. Moved the
associated files such as bindings and headers accordingly as well.

Signed-off-by: Karsten Koenig <karsten.koenig@nordicsemi.no>
(cherry picked from commit d833556)
Pinctrl needs to set the needed drive and direction of the pins. Also
this later allows automatically setting the clock bit for the traceclk
pin.

Signed-off-by: Karsten Koenig <karsten.koenig@nordicsemi.no>
(cherry picked from commit 85363f9)
Added driver and bindings for the coresight nrf submodule.
add integrated it for the nrf54h20.
The coresight subsystem is a combination of ARM Coresight peripherals
that get configured together to achieve a simplified configuration based
on a desired operating mode.

This also replaces the previous handling in the nrf54h20 soc.c which was
powering the subsystem up but not configuring it.

Signed-off-by: Karsten Koenig <karsten.koenig@nordicsemi.no>
(cherry picked from commit 6066a42)
Replaced the old tddconf with the full coresight driver that configures
the coresight peripherals locally on the running core.
Also fixed minor bug in the corresponding sample where messages were not
shown for the radio core.

Signed-off-by: Karsten Koenig <karsten.koenig@nordicsemi.no>
(cherry picked from commit 02fb6fa)
Make sure the nordic_vpr_launcher gets started after the coresight
driver if that is present.

Signed-off-by: Karsten Koenig <karsten.koenig@nordicsemi.no>
(cherry picked from commit 24353a8)
Added a new convience snippet to redirect logs to STM and then sink them
to TPIU where they can be captured by a trace probe.

Signed-off-by: Karsten Koenig <karsten.koenig@nordicsemi.no>
(cherry picked from commit 0b5bb3c)
The JLinkScript originally configured more than needed which reduces
readability, so stripped it down to the minimum.
At the same time improved behavior under reset and added ETM to the
radiocore JLinkScript.

Signed-off-by: Karsten Koenig <karsten.koenig@nordicsemi.no>
(cherry picked from commit a50dc9f)
Configure SDP MSPI pins to switch their control to VPR core

Signed-off-by: Jakub Zymelka <jakub.zymelka@nordicsemi.no>
Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
Signed-off-by: Magdalena Pastula <magdalena.pastula@nordicsemi.no>
Signed-off-by: Karsten Koenig <karsten.koenig@nordicsemi.no>
(cherry picked from commit a9bcc44)
(cherry picked from commit 2e74ea7)
(cherry picked from commit 915e81a)
…river

There were recent changes to nrf54h20dk and STM driver.
Align test accordingly:
- add Kconfig that boots Radio core,
- update expected timing results.

Signed-off-by: Sebastian Głąb <sebastian.glab@nordicsemi.no>
(cherry picked from commit 3d56c2f)
This reverts commit 4fa4304.

Signed-off-by: Triveni Danda <triveni.danda@nordicsemi.no>
Fix overriding the test certificates directory for enterprise mode
when using sysbuild. The override already works as expected without
sysbuild.

Signed-off-by: Triveni Danda <triveni.danda@nordicsemi.no>
(cherry picked from commit 57a35d9)
Add support for UICR.SECONDARY.TRIGGER configuration, which enables
automatic booting of secondary firmware based on specific reset reasons.

This introduces Kconfig options for configuring:
- UICR.SECONDARY.TRIGGER.ENABLE - Enable/disable automatic triggers
- UICR.SECONDARY.TRIGGER.RESETREAS - Bitmask of reset reasons that
  trigger secondary firmware boot

Individual Kconfig options are provided for each reset reason:
- APPLICATIONWDT0/1 - Application core watchdog timeouts
- APPLICATIONLOCKUP - Application core CPU lockup
- RADIOCOREWDT0/1 - Radio core watchdog timeouts
- RADIOCORELOCKUP - Radio core CPU lockup

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
(cherry picked from commit 9dc2b61)
…ECTEDMEM

Add support for UICR.SECONDARY.PROTECTEDMEM configuration, which enables
configuration of the protected memory region for secondary firmware.

This introduces Kconfig options for configuring:
- GEN_UICR_SECONDARY_PROTECTEDMEM - Enable/disable protected memory
  for secondary firmware
- GEN_UICR_SECONDARY_PROTECTEDMEM_SIZE_BYTES - Size of the protected
  memory region in bytes

The implementation validates that the configured size is divisible by
4096 bytes (4 KiB) as required by the hardware, and converts it to
4 KiB units when writing to UICR.SECONDARY.PROTECTEDMEM.SIZE4KB.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
(cherry picked from commit c3f6b8c)
Add support for UICR.LOCK configuration, which locks the entire UICR
configuration in NVR0 to prevent unauthorized modifications.

This introduces a Kconfig option GEN_UICR_LOCK that enables locking
of the UICR. Once locked, the UICR can only be modified by performing
an ERASEALL operation.

This is a critical security feature for production devices, typically
enabled alongside UICR.APPROTECT, UICR.PROTECTEDMEM, and
UICR.ERASEPROTECT to establish a complete device protection scheme.

When enabled, the gen_uicr.py script sets UICR.LOCK to 0xFFFFFFFF,
which configures the NVR0 page as read-only and enforces integrity
checks on the UICR content.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
(cherry picked from commit 1ffdf09)
Add support for UICR.ERASEPROTECT configuration, which blocks ERASEALL
operations to prevent bulk erasure of protected memory.

This introduces a Kconfig option GEN_UICR_ERASEPROTECT that enables
blocking of ERASEALL operations on NVR0, preserving UICR settings even
if an attacker attempts a full-chip erase.

This is a critical security feature for production devices. When enabled
together with UICR.LOCK, it becomes impossible to modify the UICR in
any way, establishing a permanent device protection scheme. Due to this
irreversibility, it should only be enabled during the final stages of
production.

When enabled, the gen_uicr.py script sets UICR.ERASEPROTECT to
0xFFFFFFFF, which prevents the ERASEALL command from affecting the
NVR0 page.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
(cherry picked from commit e20352d)
Add support for UICR.APPROTECT configuration, which controls debugger
and access-port permissions through the TAMPC peripheral.

This introduces three Kconfig options that allow independent control
over access port protection for different processor domains:

- GEN_UICR_APPROTECT_APPLICATION_PROTECTED: Controls debug access to
  the application domain processor
- GEN_UICR_APPROTECT_RADIOCORE_PROTECTED: Controls debug access to
  the radio core processor
- GEN_UICR_APPROTECT_CORESIGHT_PROTECTED: Controls access to the
  CoreSight debug infrastructure

When enabled, each option sets the corresponding UICR.APPROTECT
register to PROTECTED (0xFFFFFFFF), which disables debug access for
that domain. When disabled, the registers remain at their erased value
(UNPROTECTED), allowing full debug access.

This feature is critical for production devices where debug access must
be restricted to prevent unauthorized access to sensitive code and data.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
(cherry picked from commit 1438f8a)
…e transition

Add --permit-permanently-transitioning-device-to-deployed safety flag
to gen_uicr.py, required when enabling both UICR.LOCK and
UICR.ERASEPROTECT together. This prevents accidental permanent locking
of devices since this combination makes the configuration irreversible.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
(cherry picked from commit 35b89ab)
- The UUID is the device unique identifier read from the
OTP and made available in boot report to avoid the repetitive
slow reads from OTP.

Signed-off-by: Aymen LAOUINI <aymen.laouini@nordicsemi.no>
(cherry picked from commit 4312c88)
…r/zephyr.hex

uicr/zephyr/zephyr.hex needs to be built after all other zephyr
images.

Instead of adding a dependency on uicr, we check the sysbuild_images
property to find images.

Also, we check it as late possible by using the cmake_language(DEFER
DIRECTORY feature. Which will ensure that running this code will be
one of the last things that the CMake sysbuild program does at
Configure time.

Upstream PR #: 97685

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
…ronSide

LED pins need to be set in the cpuapp/iron rev. 0.2.0 overlay.

Signed-off-by: Tommi Kangas <tommi.kangas@nordicsemi.no>
(cherry picked from commit f8f87c0)
nordicjm and others added 21 commits November 11, 2025 14:58
…tion"

This reverts commit 5984d72.

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Use different GPIOTE interrupt number when building for
cpuapp/ns.

Upstream PR #: 99247

Signed-off-by: Michał Stasiak <michal.stasiak@nordicsemi.no>
…ion"

This reverts commit e6d6cc0.

Signed-off-by: Tomasz Chyrowicz <tomasz.chyrowicz@nordicsemi.no>
This reverts commit b856d4e.

Signed-off-by: Tomasz Chyrowicz <tomasz.chyrowicz@nordicsemi.no>
… XIP"

This reverts commit 0fb7618.

Signed-off-by: Tomasz Chyrowicz <tomasz.chyrowicz@nordicsemi.no>
Fixes an issue whereby just enabling hooks would enable the nrf5340
network core hook despite lacking other requirements

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Signed-off-by: Tomasz Chyrowicz <tomasz.chyrowicz@nordicsemi.no>
(cherry picked from commit b856d4e)
When remote peer have closed the PPP link normally, the
PPP stack on Zephyr side switches back to ESTABLISH phase
to be ready for next handshake.

When calling net_if_down() on the interface, it should not
try to initiate LCP link termination, but instead go directly
to DEAD phase.

See https://datatracker.ietf.org/doc/html/rfc1661#section-3.2

Upstream PR #: 99078

Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
Add support for nrf54lm20a board in i2c_nrfx_twim tests

Upstream PR #: 99178

Signed-off-by: Piotr Krzyzanowski <piotr.krzyzanowski@nordicsemi.no>
As future nRF54L SoCs may differ in terms of content,
general SOC_NRF54L_CPUAPP_COMMON symbol needs to cover
less symbols. These will be selected by specific SoC based
on support.

Upstream PR #: 99239

Signed-off-by: Michał Stasiak <michal.stasiak@nordicsemi.no>
The can_nrf.c device driver used DEVICE_DT_INST_DEFINE instead of
CAN_DEVICE_DT_INST_DEFINE, which means we are missing initialization
of some CAN structures, namely STATS.

Update driver to use CAN_DEVICE_DT_INST_DEFINE()

Upstream PR #: 99259

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
…LOCK_CONTROL

The GRTC timer, typically used as sys clock on newer nordic chips,
is currently tightly coupled to the CLOCK_CONTROL_NRF drivers though
not being dependent on it. The GRTC and its device driver is
independent from CLOCK_CONTROL, its clock requirements are managed
by hardware, based on its clock source selection.

This commit moves the clock source selection to the GRTC driver, and
removes the hard coupling to the CLOCK_CONTROL drivers. To preserve
backwards compatibility, if CLOCK_CONTROL_NRF_K32SRC_RC is selected,
GRTC will default to LFLPRC.

Upstream PR #: 99147

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
The UART device used by the backend needs to be gotten before use,
and put after. In limited cases, device drivers call
pm_device_runtime_get() as part of the call to uart_rx_enable(),
this is not the case for polling, nor interrupt driven API calls
for most if not all drivers, nor is that expected.

Implement pm_device_runtime calls in shell uart backend similar to
the logging uart backend to support all uart drivers in all
configurations.

Upstream PR #: 98681

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
Add support for device runtime power management.
Suspending the device will place it into sleep mode, its lowest
power state.
All config will be lost when suspending the device.
Do not allow suspending the device if it is started or has
RX filters registered.
The application has to reconfigure the CAN device to resume
expected operation.

Signed-off-by: Ryan Erickson <ryan.erickson@ezurio.com>
(cherry picked from commit 631dbd9)
Implement CAN_MODE_ONE_SHOT in MCAN impementation. The implementation
contains a workaround for a bug in the MCAN IP which prevents an IRQ
from triggering.

This is a noup as the workaround is too complicated and the feature
is too niche to be accepted it upstream.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
Remove the handling of cross domain pins from nrf drivers. To use
cross domain in tests, force on constlat and disable power domains
for the test.

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
(cherry picked from commit 306c3d4)
…rder

The clock options used within the driver are supposed to be ordered
from lowest to highest power consumption, so the lowest/default
option is the most power efficient. The order was reversed to make
the init code of the lfclk a bit simpler, and this was accounted for
in the clock option lookup function. However, the common nrf clock
control request/release feature would request the lowest index, not
the lowest clock option, so the lfclk would default to its highest
power consumption mode.

The clock option init and lookup has been refactored to be sorted
from lowest to highest power consumption, and comments have been
adjusted accordingly.

Upstream PR #: 99382

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
…kend"

This reverts commit 736a34f.

UART backend is implemented in Serial Modem add-on.

Signed-off-by: Markus Lassila <markus.lassila@nordicsemi.no>
…dt reg check

- Activate the UICR file generation and PeriphConf for nRF92 application.
- Add condition in reg dt check file to use the correct uicr node name
  for nRF92X.
- Generation of preriphconf entries filters on device names to match
  the first 5 characters to nrf92 or the 6 first characters to nrf54h,
  this information is also used to determine the device SOC_SERIES
  to be either SOC_SERIES_NRF54HX or SOC_SERIES_NRF92X allowing possible
  extension of usage. Still in case of an unknown device of a certain
  family it will use existing configuration while generating
  periphconf entries.

Signed-off-by: Aymen LAOUINI <aymen.laouini@nordicsemi.no>
(cherry picked from commit d9861d7)
- nRF9280 memory_map_iron is missing periphconf_partition, added this
  partition to mram11 at address 0xe60a000.
- Add secure_storage_partition at 0xe60c000 to memory map. This
  partition is devided in two: cpuapp_crypto_partition and
  cpuapp_its_partition, both are 4KB. Those partitions are used
  by gen_uicr.py script to generate the UICR file.

Signed-off-by: Aymen LAOUINI <aymen.laouini@nordicsemi.no>
(cherry picked from commit 8f0fbbe8aa8510ec02719b4c7b5c186fb82f3ca0)
- Removed cpurad_uicr and cpuapp_uicr nodes and added uicr node
  at address 0xfff8000 for nRF9280.
- Add bicr node defined in same node as uicr but at offset 800.
- Add tdd_peripherals node.

Signed-off-by: Aymen LAOUINI <aymen.laouini@nordicsemi.no>
(cherry picked from commit ba420519af42516613ebb100343141699e8adbbb)
nrf54h20 cpurad bt_ll_sw_split support.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
NordicBuilder added a commit to NordicBuilder/sdk-nrf that referenced this pull request Nov 18, 2025
Automatically created by action-manifest-pr GH action from PR:
nrfconnect/sdk-zephyr#3506

Signed-off-by: Nordic Builder <pylon@nordicsemi.no>
rick1082 and others added 4 commits November 18, 2025 10:41
FICR compile error fixed
ECB compile error fixed
SWI compile error fixed
draft modification for radio
Update radio.c due to miss some device check

Signed-off-by: Jui-Chou Chung <jui-chou.chung@nordicsemi.no>
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Added initial implementation for nrf54hx LF clock control.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Added initial implementation for nrf54hx GRTC use for Radio.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Added initial implementation for nrf54hx HF clock control.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
@cvinayak cvinayak force-pushed the github_nrf54h20_cpurad_bt_ll_sw_split_support branch from c9c7f62 to 5bb7f21 Compare November 18, 2025 09:42
NordicBuilder added a commit to NordicBuilder/sdk-nrf that referenced this pull request Nov 18, 2025
Automatically created by action-manifest-pr GH action from PR:
nrfconnect/sdk-zephyr#3506

Signed-off-by: Nordic Builder <pylon@nordicsemi.no>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.